using System;
using System.IdentityModel.Tokens;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace Net35.Xrm.Sdk.Client
{
	public interface IServiceConfiguration<TService>
	{
		IssuerEndpoint CurrentIssuer
		{
			get;
			set;
		}
		System.ServiceModel.Description.ServiceEndpoint CurrentServiceEndpoint
		{
			get;
			set;
		}
		AuthenticationProviderType AuthenticationType
		{
			get;
		}
		ServiceEndpointDictionary ServiceEndpoints
		{
			get;
		}
		IssuerEndpointDictionary IssuerEndpoints
		{
			get;
		}
		CrossRealmIssuerEndpointCollection CrossRealmIssuerEndpoints
		{
			get;
		}
		PolicyConfiguration PolicyConfiguration
		{
			get;
		}
		System.ServiceModel.ChannelFactory<TService> CreateChannelFactory();
		System.ServiceModel.ChannelFactory<TService> CreateChannelFactory(ClientAuthenticationType clientAuthenticationType);
		System.ServiceModel.ChannelFactory<TService> CreateChannelFactory(System.ServiceModel.Description.ClientCredentials clientCredentials);
		SecurityTokenResponse Authenticate(System.ServiceModel.Description.ClientCredentials clientCredentials);
		SecurityTokenResponse Authenticate(System.IdentityModel.Tokens.SecurityToken securityToken);
		SecurityTokenResponse AuthenticateCrossRealm(System.ServiceModel.Description.ClientCredentials clientCredentials, string appliesTo, System.Uri crossRealmSts);
		SecurityTokenResponse AuthenticateCrossRealm(System.IdentityModel.Tokens.SecurityToken securityToken, string appliesTo, System.Uri crossRealmSts);
		SecurityTokenResponse Authenticate(System.ServiceModel.Description.ClientCredentials clientCredentials, SecurityTokenResponse deviceSecurityToken);
		SecurityTokenResponse AuthenticateDevice(System.ServiceModel.Description.ClientCredentials clientCredentials);
		IdentityProvider GetIdentityProvider(string userPrincipalName);
	}
}
